home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib13.dsk
/
APPLE INTERVAL TIMER.bas
next >
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
94 lines
50 REM ************************
52 REM * APPLE INTERVAL TIMER *
54 REM * BY C.J.THOMPSON *
56 REM * COPYRIGHT (C) 1980 *
58 REM * BY MICRO-SPARC, INC. *
60 REM * LINCOLN, MA. 01773 *
62 REM ************************
140 REM THIS PROGRAM PROVIDES
160 REM ANALOG AND DIGITAL
180 REM COUNTDOWN OF AN ARBI-
200 REM TRARY SERIES OF TIME
220 REM INTERVALS. USEFUL FOR
240 REM PROCESSING PHOTOGRAPHIC
260 REM NEGATIVES, PRINTS AND
280 REM BOILED EGGS !!!
300 REM INITIALIZE VARIABLES
320 A = 2: REM MINUTE HAND IS GREEN
340 B = 5: REM SECOND HAND IS RED
360 TC = 200: REM TIMING CORRECTION (LARGER=SLOWER)
380 DIM TI(25),TS(25): REM MAX NUMBER OF INTERVALS IS 25
400 K = 3: REM NUMBER OF ALARM BUZZES
420 TA = 25: REM LENGTH OF EACH BUZZ
480 GOTO 1000: REM JUMP OVER SUBROUTINES
500 REM TIMER SUBROUTINE
510 GOSUB 640
520 FOR TI = TS TO 0 STEP -1
530 H = 22: REM DIGITAL READOUT NOMINAL TAB
540 IF TI < = 99 THEN H = H +1
550 IF TI = 99 THEN GOSUB 640
560 IF TI < = 9 THEN H = H +2
570 IF TI = 9 THEN GOSUB 640
580 VTAB 22: HTAB H: GOSUB 740: GOSUB 890
590 PRINT TI;" SECONDS TO GO"
600 REM TIMING CORRECTION
610 FOR N = 1 TO TC: NEXT N
620 NEXT TI
630 RETURN
640 HOME : VTAB 22: PRINT "STEP ";ST;": ";T;" MIN.": RETURN
650 REM ALARM CONTROL
660 FOR N = 1 TO K
670 FOR J = 1 TO TA
680 GOSUB 720
690 NEXT J
700 FOR L = 1 TO 100: NEXT L: REM PAUSE
710 NEXT N: RETURN
720 S = -16336:X = PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S) - PEEK(S): RETURN
730 HOME : VTAB 22: RETURN
740 REM CLOCK GRAPHICS
750 HGR :MN = INT(TI/60):TH = TI
760 TH = TH -60: IF TH >60 GOTO 760
770 SC = TH
780 X = 139:Y = 79:R = 60:RS = 75
790 AM = MN *.5236
800 AS = SC *.1047
810 XM = R * SIN(AM)
820 YM = R * COS(AM)
830 XS = RS * SIN(AS)
840 YS = RS * COS(AS)
850 HCOLOR= A: HPLOT X,Y TO X +XM,Y -YM
860 HCOLOR= B: HPLOT X,Y TO X +XS,Y -YS
870 RETURN
880 REM SECOND TICKING
890 S = -16336:X = PEEK(S) - PEEK(S) - PEEK(S): RETURN
900 REM EXIT UNTIL AGAIN
910 TEXT : HOME : VTAB 10: HTAB 5: PRINT "TILL NEXT 'TIME' -------- ": VTAB 22: END
920 REM END SUBROUTINES
1000 REM MAIN PROGRAM
1020 TEXT : CALL -936
1040 HTAB 5: PRINT "***** APPLE INTERVAL TIMER *****"
1060 POKE 34,2: VTAB 10
1080 PRINT "THIS PROGRAM WILL COUNT DOWN UP TO 25 PRESET TIME INTERVALS. ENTER THE NUMBER OF INTERVALS IN THIS SET .. ";: INPUT NI%
1100 HOME : VTAB 5: PRINT "NOW ENTER THE LENGTH OF EACH INTERVAL INDECIMAL MINUTES (EX. 3.25)"
1120 VTAB 8
1140 FOR I = 1 TO NI%: PRINT "INTERVAL ";I;" : ";: INPUT TI(I)
1160 TS(I) = INT(TI(I) *60): NEXT : REM ROUND TO NEAREST SECOND
1180 VTAB 20: PRINT "*** ENTRIES CORRECT Y";: HTAB 21: INPUT A$: IF LEN(A$) = 0 THEN A$ = "Y"
1200 IF LEFT$(A$,1) < >"Y" THEN 1000
1220 HOME
1240 VTAB 15: PRINT "TO START TIMING THE FIRST STEP, PRESS THE RETURN KEY. ";: GET A$
1260 FOR ST = 1 TO NI%:T = ( INT(TI(ST) *100 +.5))/100:TS = TS(ST)
1280 GOSUB 500: GOSUB 650: GOSUB 730
1300 IF ST = NI% THEN GOTO 1360
1320 VTAB 22: PRINT "TO START TIMING THE NEXT INTERVAL, PRESSTHE RETURN KEY .";: GET A$
1340 NEXT
1360 TEXT : HOME : VTAB 5: PRINT "*** SELECT APPROPRIATE NUMBER: "
1380 VTAB 7: HTAB 5: PRINT "(1) RECYCLE TIMER"
1400 VTAB 8: HTAB 5: PRINT "(2) SELECT NEW TIMER PARAMETERS"
1420 VTAB 9: HTAB 5: PRINT "(3) QUIT "
1440 VTAB 11: HTAB 10: PRINT "SELECTION 1";: HTAB 20: INPUT A$
1460 IF LEN(A$) = 0 THEN SE% = 1: GOTO 1520
1480 IF VAL(A$) <1 OR VAL(A$) >3 THEN 1360
1500 SE% = VAL(A$)
1520 ON SE% GOTO 1240,1000,910
1540 REM BOTTOM OF PROGRAM